Lec 28: Cache Coherence And Memory Consistency